Skip to content

chore: close signups and checkout, show a "taking a break" notice - #612

Merged
aybabtme merged 1 commit into
mainfrom
chore/close-signups-for-break
Aug 31, 2026
Merged

chore: close signups and checkout, show a "taking a break" notice#612
aybabtme merged 1 commit into
mainfrom
chore/close-signups-for-break

Conversation

@aybabtme

Copy link
Copy Markdown
Contributor

humanlog.io is paused — see the retro. People who signed up to try the app were silently given a $0/month "Free" subscription and are now emailing to have it turned off, so the front door needs to close.

What this does

Replaces sign-in, sign-up and every checkout path with a "humanlog.io is taking a break" notice that links to the retro and collects emails for a minitape launch list.

Route Now renders
/sign-up, /sign-up/* break notice
/sign-in, /sign-in/reset-password/* break notice
/pricing, /user/purchase break notice, no Stripe Elements
/create-org, /onboarding/*, /[org]/env-new break notice

The pages underneath are left in the tree for whenever the lights come back on.

The part that actually matters

src/lib/auth.ts is the real switch. Two things worth reviewing carefully:

  1. The shared better-auth config is spread into ours, so the overrides must come after the spread and merge into it rather than replace it — a bare emailAndPassword: {…} would drop requireEmailVerification and sendResetPassword.
  2. Emptying socialProviders is not optional. signIn.social auto-creates an account for any unknown GitHub/Google identity, and those buttons render on the sign-in page too — so closing /sign-up alone would not have stopped new accounts.

The sign-in/sign-up layouts now render the notice unconditionally instead of gating children behind the release_auth_temp PostHog flag, so the nested routes are covered by one edit each and the behaviour no longer depends on PostHog being reachable.

Verified against a dev server

Request Response
POST /api/auth/sign-up/email 400 EMAIL_AND_PASSWORD_SIGN_UP_IS_NOT_ENABLED
POST /api/auth/sign-in/email 400 EMAIL_AND_PASSWORD_IS_NOT_ENABLED
POST /api/auth/sign-in/social 404 PROVIDER_NOT_FOUND

All seven routes above render the notice with the retro link and no js.stripe.com. npm run build, tsc --noEmit and next lint pass; npm run fmt is a no-op.

Reuse rather than new code

  • The launch-list form is the existing CloudBetaSignup (getlaunchlist MJv5ZO), re-worded for minitape and no longer behind experiment_cloud_waitlist_temp.
  • The site-wide banner is DismissibleBanner, which already existed but was mounted nowhere.
  • The notice layout follows not-found.tsx.

The hero CTA drops its signup framing but keeps the installer — the CLI still works locally and is being open-sourced.

Related

The backend refuses account, session and subscription creation independently — see the companion PR in apisvc. The 79 leftover free Stripe subscriptions have already been cancelled.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YTkqPnYuuk4wirAoZAeuu6

humanlog.io is paused (https://www.webscale.lol/blog/humanlog-retro): the log
parser is being open-sourced and the hosted observability tool is moving to
minitape. People who signed up to try the app were given a $0/month "Free" plan
and are now emailing to have it turned off, so the front door needs to close.

The real switch is in src/lib/auth.ts. The shared better-auth config is spread
into ours, so the overrides have to come after that spread and merge into it
rather than replace it, or the callbacks it carries go with them. Disabling
emailAndPassword closes /api/auth/sign-in/email and /api/auth/sign-up/email;
emptying socialProviders removes the GitHub and Google routes. That last part
matters: signIn.social auto-creates an account for any unknown identity, and
those buttons render on the sign-IN page too, so closing /sign-up alone would
not have stopped new accounts.

The sign-in and sign-up layouts now render the notice instead of gating their
children behind the release_auth_temp PostHog flag, which covers the nested
routes (email-verify, reset-password, ...) in one edit each. Pricing, purchase,
create-org, onboarding and env-new render it too, so no live Stripe Elements
checkout is reachable. The pages underneath are left in the tree for whenever
the lights come back on.

The notice reuses the getlaunchlist form as a minitape launch list, and the
previously-unmounted DismissibleBanner as a site-wide notice. The hero CTA drops
its signup framing but keeps the installer, since the CLI still works locally.

Verified against a dev server: sign-up/email and sign-in/email return 400, social
returns 404, and all seven auth/checkout routes render the notice with no
js.stripe.com. The backend refuses account and session creation independently.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YTkqPnYuuk4wirAoZAeuu6
@aybabtme
aybabtme merged commit 14b043d into main Aug 31, 2026
0 of 2 checks passed
@aybabtme
aybabtme deleted the chore/close-signups-for-break branch August 31, 2026 11:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant